#ifndef MATRICEGL_h
#define MATRICEGL_h
/**
@brief MatriceGL
@author Bourgès Cyril
@version 1.0
@date 8 juillet 2009
@date 15 decembre 2009
@date 14 octobre 2011
@see Site Auteur : http://shadowluz.alwaysdata.net/ \n
*/
//---STD-------------------------------------------------------------
#include <stack>

//---SM--------------------------------------------------------------
#include "Matrice4.hpp"

//---Using-----------------------------------------------------------
using std::stack;

//-------------------------------------------------------------------

namespace SM {

class MatriceGL : public Matrice4<float> {
private:
  ///Sauvegarde position
  stack< Matrice4<float> > stackData ;
  
public:
  MatriceGL () ;
  MatriceGL (float _fov, float _faspect, float _fnearplane, float _farplane) ;
  MatriceGL (const MatriceGL &_matrice) ;
  virtual ~MatriceGL() ;

  void push() ;
  void push(Matrice4<float> &_matrice) ;
  void pop() ;

  virtual void setPerspective (float _fov, float _faspect, float _fnearplane, float _farplane) ;
  virtual void setLookAt (float _feyex, float _feyey, float _feyez, float _fcamx, float _fcamy, float _fcamz, float _fupx, float _fupy, float _fupz) ;
} ; // MatriceGL
}   //---namespace SluzMatrice
#else
class MatriceGL ;
#endif
